package com.itcast.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itcast.admin.domain.CheckupItem;
import com.itcast.admin.domain.request.CreateItemReqDTO;
import com.itcast.admin.domain.request.ItemPageReqDTO;
import com.itcast.admin.domain.request.QueryEnableGroupAndItemReqDTO;
import com.itcast.admin.domain.request.UpdateItemReqDTO;
import com.itcast.admin.domain.response.ItemPageResDTO;
import com.itcast.admin.domain.response.QueryEnableGroupAndItemResDTO;
import com.jzo2o.common.model.PageResult;

import java.util.List;

/**
 * <p>
 * 体检项 服务类
 * </p>
 *
 * @author author
 * @since 2024-11-04
 */
public interface ICheckupItemService extends IService<CheckupItem> {

    /**
     * 新增体检项
     * @param createItemReqDTO
     */
    void createCheckItem(CreateItemReqDTO createItemReqDTO);

    /**
     * 分页查询体检项
     * @param itemPageReqDTO
     * @return
     */
    PageResult<ItemPageResDTO> pageQuery(ItemPageReqDTO itemPageReqDTO);

    /**
     * 根据id查询体检项
     * @param id
     */
    CheckupItem getItemById(Integer id);

    /**
     * 根据id修改体检项
     * @param id
     * @return
     */
    void updateItemById(Integer id, UpdateItemReqDTO updateItemReqDTO);

    /**
     * 启用体检项
     * @param id
     */
    void enableItemById(Integer id);

    /**
     * 校验更新操作会影响下架的套餐
     * @param id
     */
    List<String> checkModifyById(Integer id);

    /**
     * 校验禁用操作会影响下架的套餐
     * @param id
     * @return
     */
    List<String> checkDisableById(Integer id);

    /**
     * 根据id禁用体检项
     * @param id
     */
    void disableItemById(Integer id);

    /**
     * 根据id删除体检项
     * @param id
     */
    void deleteItemById(Integer id);

    /**
     * 查询启用的体检组和体检项
     * @param queryEnableGroupAndItemReqDTO
     * @return
     */
    List<QueryEnableGroupAndItemResDTO> queryEnabledGroupAndItem(QueryEnableGroupAndItemReqDTO queryEnableGroupAndItemReqDTO);

    /**
     * 查询套餐id关联的检查项id列表
     * @param id
     * @return
     */
    List<Integer> queryItemIdsBySetmealId(Integer id);
}
